home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / gtk-2.0 / demo / button_box.c < prev    next >
Encoding:
C/C++ Source or Header  |  2006-04-25  |  3.3 KB  |  128 lines

  1. /* Button Boxes
  2.  *
  3.  * The Button Box widgets are used to arrange buttons with padding.
  4.  */
  5.  
  6. #include <gtk/gtk.h>
  7.  
  8. static GtkWidget *
  9. create_bbox (gint  horizontal,
  10.          char *title, 
  11.          gint  spacing,
  12.          gint  layout)
  13. {
  14.   GtkWidget *frame;
  15.   GtkWidget *bbox;
  16.   GtkWidget *button;
  17.     
  18.   frame = gtk_frame_new (title);
  19.  
  20.   if (horizontal)
  21.     bbox = gtk_hbutton_box_new ();
  22.   else
  23.     bbox = gtk_vbutton_box_new ();
  24.  
  25.   gtk_container_set_border_width (GTK_CONTAINER (bbox), 5);
  26.   gtk_container_add (GTK_CONTAINER (frame), bbox);
  27.  
  28.   gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout);
  29.   gtk_box_set_spacing (GTK_BOX (bbox), spacing);
  30.   
  31.   button = gtk_button_new_from_stock (GTK_STOCK_OK);
  32.   gtk_container_add (GTK_CONTAINER (bbox), button);
  33.   
  34.   button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
  35.   gtk_container_add (GTK_CONTAINER (bbox), button);
  36.   
  37.   button = gtk_button_new_from_stock (GTK_STOCK_HELP);
  38.   gtk_container_add (GTK_CONTAINER (bbox), button);
  39.  
  40.   return frame;
  41. }
  42.  
  43. GtkWidget *
  44. do_button_box (GtkWidget *do_widget)
  45. {
  46.   static GtkWidget *window = NULL;
  47.   GtkWidget *main_vbox;
  48.   GtkWidget *vbox;
  49.   GtkWidget *hbox;
  50.   GtkWidget *frame_horz;
  51.   GtkWidget *frame_vert;
  52.     
  53.   if (!window)
  54.   {
  55.     window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  56.     gtk_window_set_screen (GTK_WINDOW (window),
  57.                gtk_widget_get_screen (do_widget));
  58.     gtk_window_set_title (GTK_WINDOW (window), "Button Boxes");
  59.     
  60.     g_signal_connect (window, "destroy",
  61.               G_CALLBACK (gtk_widget_destroyed),
  62.               &window);
  63.     
  64.     gtk_container_set_border_width (GTK_CONTAINER (window), 10);
  65.  
  66.     main_vbox = gtk_vbox_new (FALSE, 0);
  67.     gtk_container_add (GTK_CONTAINER (window), main_vbox);
  68.     
  69.     frame_horz = gtk_frame_new ("Horizontal Button Boxes");
  70.     gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz, TRUE, TRUE, 10);
  71.     
  72.     vbox = gtk_vbox_new (FALSE, 0);
  73.     gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
  74.     gtk_container_add (GTK_CONTAINER (frame_horz), vbox);
  75.  
  76.     gtk_box_pack_start (GTK_BOX (vbox), 
  77.             create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD),
  78.             TRUE, TRUE, 0);
  79.  
  80.     gtk_box_pack_start (GTK_BOX (vbox), 
  81.             create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE),
  82.             TRUE, TRUE, 5);
  83.     
  84.     gtk_box_pack_start (GTK_BOX (vbox), 
  85.             create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START),
  86.             TRUE, TRUE, 5);
  87.     
  88.     gtk_box_pack_start (GTK_BOX (vbox), 
  89.             create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END),
  90.             TRUE, TRUE, 5);
  91.  
  92.     frame_vert = gtk_frame_new ("Vertical Button Boxes");
  93.     gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE, 10);
  94.     
  95.     hbox = gtk_hbox_new (FALSE, 0);
  96.     gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);
  97.     gtk_container_add (GTK_CONTAINER (frame_vert), hbox);
  98.  
  99.     gtk_box_pack_start (GTK_BOX (hbox), 
  100.             create_bbox (FALSE, "Spread", 30, GTK_BUTTONBOX_SPREAD),
  101.             TRUE, TRUE, 0);
  102.  
  103.     gtk_box_pack_start (GTK_BOX (hbox), 
  104.             create_bbox (FALSE, "Edge", 30, GTK_BUTTONBOX_EDGE),
  105.             TRUE, TRUE, 5);
  106.  
  107.     gtk_box_pack_start (GTK_BOX (hbox), 
  108.             create_bbox (FALSE, "Start", 30, GTK_BUTTONBOX_START),
  109.             TRUE, TRUE, 5);
  110.  
  111.     gtk_box_pack_start (GTK_BOX (hbox), 
  112.             create_bbox (FALSE, "End", 30, GTK_BUTTONBOX_END),
  113.             TRUE, TRUE, 5);
  114.   }
  115.  
  116.   if (!GTK_WIDGET_VISIBLE (window))
  117.     {
  118.       gtk_widget_show_all (window);
  119.     }
  120.   else
  121.     {     
  122.       gtk_widget_destroy (window);
  123.       window = NULL;
  124.     }
  125.  
  126.   return window;
  127. }
  128.